4-dars. Non-primitive typelar (Set va Dictionary)
Dars maqsadlari:
- Set
- Set non-primitive turini tushunish.
- Setning asosiy funksiyalari:
add,union,difference,intersection,update,clear,copy,difference_update,discard,intersection_update,pop,removehaqida bilib olish. - Set va list ma'lumotlari bilan qanday ishlashni o'rganish.
- Dictionary
- Dictionary ma'lumot turini tushunish.
- Dictionary ning asosiy funksiyalari va ularning qanday ishlashini o‘rganish.
- List va dictionary ma'lumotlarini birga ishlatish usullarini o‘zlashtirish.
Set
Set haqida tushuncha
Setlar - bu takrorlanmaydigan qiymatlarni o'z ichiga oladigan ma'lumotlar strukturasi. Python dasturlash tilida setlar {} qavslar bilan yaratiladi va o'zgaruvchan (mutable) hisoblanadi. Yana bir muhim jihati - setlar tartiblangan emas, shuning uchun ichidagi elementlar har doim bir xil tartibda saqlanmaydi.
Setning asosiy funksiyalari
add()
add() funksiyasi setga yangi element qo'shadi. Agar element avvaldan mavjud bo'lsa, u hech qanday o'zgarish qilmaydi.
Sintaksis:
set_name.add(element)
Misol:
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # Natija: {1, 2, 3, 4}
union()
union() funksiyasi ikkita yoki undan ortiq setni birlashtiradi va ularning barcha unikal elementlarini qaytaradi.
Sintaksis:
new_set = set1.union(set2)
Misol:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1.union(set2)
print(result) # Natija: {1, 2, 3, 4, 5}
difference()
difference() funksiyasi bir setdan ikkinchi setdagi elementlarni olib tashlab, natijaviy setni qaytaradi.
Sintaksis:
new_set = set1.difference(set2)
Misol:
set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1.difference(set2)
print(result) # Natija: {1}
intersection()
intersection() funksiyasi ikkita setning kesishgan joylarini (ya'ni, har ikkala setda mavjud bo'lgan elementlarni) qaytaradi.
Sintaksis:
new_set = set1.intersection(set2)
Misol:
set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1.intersection(set2)
print(result) # Natija: {2, 3}
update()
update() funksiyasi setga boshqa set yoki iterable (masalan, list) elementlarini qo'shadi.
Sintaksis:
set_name.update(another_set)
Misol:
my_set = {1, 2}
my_set.update([3, 4])
print(my_set) # Natija: {1, 2, 3, 4}
clear()
clear() funksiyasi setni tozalaydi, ya'ni barcha elementlarni olib tashlaydi.
Sintaksis:
set_name.clear()
Misol:
my_set = {1, 2, 3}
my_set.clear()
print(my_set) # Natija: set()
copy()
copy() funksiyasi setning nusxasini yaratadi.
Sintaksis:
new_set = set_name.copy()
Misol:
my_set = {1, 2, 3}
new_set = my_set.copy()
print(new_set) # Natija: {1, 2, 3}
difference_update()
difference_update() funksiyasi setdan boshqa setdagi elementlarni olib tashlaydi.
Sintaksis:
set_name.difference_update(another_set)
Misol:
my_set = {1, 2, 3}
my_set.difference_update({2, 3})
print(my_set) # Natija: {1}
discard()
discard() funksiyasi berilgan elementni setdan olib tashlaydi. Agar element setda bo'lmasa, xato bermaydi.
Sintaksis:
set_name.discard(element)
Misol:
my_set = {1, 2, 3}
my_set.discard(2)
print(my_set) # Natija: {1, 3}
intersection_update()
intersection_update() funksiyasi setni boshqa setning kesishgan joyi bilan yangilaydi.
Sintaksis:
set_name.intersection_update(another_set)
Misol:
my_set = {1, 2, 3}
my_set.intersection_update({2, 3, 4})
print(my_set) # Natija: {2, 3}
pop()
pop() funksiyasi setdan bir elementni olib tashlaydi va uni qaytaradi. Agar set bo'sh bo'lsa, xato beradi.
Sintaksis:
removed_element = set_name.pop()
Misol:
my_set = {1, 2, 3}
removed_item = my_set.pop()
print(my_set) # Natija: {2, 3} (1 yoki boshqa element bo'lishi mumkin)
print(removed_item) # Natija: 1 (bu o'zgarishi mumkin)
remove()
remove() funksiyasi berilgan elementni setdan olib tashlaydi. Agar element mavjud bo'lmasa, xato beradi.
Sintaksis:
set_name.remove(element)
Misol:
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set) # Natija: {1, 3}
Set va list bilan ishlash
Setlar va listlar o'rtasida ba'zi farqlar mavjud. Listlar tartiblangan va takrorlanuvchi elementlarni saqlaydi, setlar esa tartiblanmagan va takrorlanmaydigan elementlardan iborat.
Misollar
List:
my_list = [1, 2, 2, 3] # Takrorlanadigan elementlar
print(my_list) # Natija: [1, 2, 2, 3]
Set:
my_set = {1, 2, 2, 3} # Takrorlanmaydigan elementlar
print(my_set) # Natija: {1, 2, 3}
Listlar sizga elementlarni qo'shish va o'chirishda ko'proq nazorat beradi, lekin setlar takrorlanuvchi elementlardan qochib, uni oson boshqarish uchun qulay qiladi.
Dictionary
Kirish
Dictionary, asosan, kalit-qiymat juftliklaridan tashkil topgan ma'lumot tuzilmasi. Bu dasturlashda juda qulay va foydali vosita bo'lib, u bilan ish qilish sizni juda ko'p vaqtni tejashga yordam beradi.
Dictionary haqida tushuncha
Dictionary - bu kalit-qiymat juftliklaridan iborat bo'lgan ma'lumot turi hisoblanadi. Har bir kalit (key) o'ziga tegishli qiymat (value) ga ega. Misol uchun, bir shaxsning ma'lumotlarini saqlamoqchi bo'lsangiz, dictionary yordamida ularning ism, yoshi va kasbiga oid ma'lumotlarni saqlashingiz mumkin:
person = {
"ism": "Ali",
"yosh": 25,
"kasb": "Dasturchi"
}
Dictionary funksiyalari
Endi dictionary'ning ba'zi asosiy funksiyalariga nazar solamiz:
-
clear(): Dictionary ichidagi barcha ma'lumotlarni o'chiradi.
person.clear() # Hamma ma'lumotlarni o'chiradi -
copy(): Dictionary ning nusxasini yaratadi.
new_person = person.copy() # person ning nusxasini yaratadi -
get(key): Berilgan kalit bo'yicha qiymatni qaytaradi. Agar kalit mavjud bo'lmasa,
Noneqaytaradi.age = person.get("yosh") # 25 ni qaytaradi -
items(): Dictionary ichidagi kalit-qiymat juftliklarini tuple shaklida qaytaradi.
for key, value in person.items():
print(key, value) -
keys(): Dictionary ichidagi barcha kalitlarni ro'yxat shaklida qaytaradi.
keys = person.keys() # ['ism', 'yosh', 'kasb'] -
values(): Dictionary ichidagi barcha qiymatlarni ro'yxat shaklida qaytaradi.
values = person.values() # ['Ali', 25, 'Dasturchi'] -
pop(key): Berilgan kalit bo'yicha qiymatni olib tashlaydi va uni qaytaradi.
name = person.pop("ism") # 'Ali' ni qaytaradi va 'ism' ni o'chiradi -
popitem(): So'nggi qo'shilgan kalit-qiymat juftligini olib tashlaydi va uni qaytaradi.
last_item = person.popitem() # ('kasb', 'Dasturchi') ni qaytaradi -
update(another_dict): Boshqa dictionary dan kalit-qiymat juftliklarini qo'shadi.
person.update({"yosh": 26}) # 'yosh' ni yangilaydi
List va Dictionary ni aralashtirib ishlatish
Dictionary va list ma'lumot turlarini birga ishlatish sizga ma'lumotlarni yanada samarali saqlash va ishlash imkonini beradi. Masalan, siz har bir shaxs haqida ma'lumotlarni dictionary ichida saqlashingiz mumkin:
people = [
{"ism": "Ali", "yosh": 25},
{"ism": "Oyxun", "yosh": 30},
{"ism": "Zafar", "yosh": 22}
]
Bu usul orqali bir nechta shaxslar haqida ma'lumotlarni osonlik bilan saqlashingiz va ular ustida operatsiyalar o'tkazishingiz mumkin.
Misollar
Keling, dictionary ni hayotiy misolda ko'rib chiqamiz. Faraz qiling, sizda talabalar ro'yxati bor:
students = {
"Ali": {"yosh": 20, "kurs": "Dasturlash"},
"Oyxon": {"yosh": 21, "kurs": "Dasturlash"},
"Zafar": {"yosh": 22, "kurs": "Matematika"}
}
Bu yerda har bir talabaning ismi kalit sifatida, ularning yoshi va kursi esa qiymat sifatida saqlanadi. Endi, agar siz Alining yoshi haqida ma'lumot olishni istasangiz:
print(students["Ali"]["yosh"]) # 20 ni qaytaradi
Qiziqarli Faktlar
- Python'da dictionary elementlari tartibga mos kelmaydi (Python 3.7 dan boshlab tartibli saqlanadi).
- Dictionary'ni foydalanganda, kalitlar unikal bo'lishi shart, shuning uchun bir xil kalitni qayta kiritishga ruxsat berilmaydi.
- Dictionary ni oson o'qish va tushunish uchun, ularni
jsonformatida ko'rsatish mumkin.
Xulosa
Bugun biz set non-primitive turini o'tdik, uning asosiy funksiyalari haqida ma'lumot oldik va amaliy misollar orqali tushunishni chuqurlashtirdik. Setlar va listlar o'rtasidagi farqlarni ko'rib chiqdik.
Dictionary - dasturlashda ma'lumotlarni samarali saqlash uchun qulay vosita. Uning asosiy funksiyalarini bilish orqali siz dasturlash jarayonini osonlashtirasiz. Dictionary va list ma'lumotlarini birga ishlatish esa sizga ma'lumotlarni yanada boyitadi.
Savollar va Javoblar
- Dictionary nima?
- Dictionary - bu kalit-qiymat juftliklaridan tashkil topgan ma'lumot turi.
- pop() funksiyasi qanday ishlaydi?
- pop() funksiyasi berilgan kalit bo'yicha qiymatni olib tashlaydi va uni qaytaradi.
- Dictionary ichida kalitlar bir xil bo'lishi mumkinmi?
- Yo'q, kalitlar unikal bo'lishi shart.
- Dictionary va list ni qanday birga ishlatish mumkin?
- List ichida bir nechta dictionary saqlab, har bir dictionary ichida kalit-qiymat juftliklarini saqlashingiz mumkin.